#include <getopt.h>
#include <stdio.h>

#include "log-util.h"
#include "symdb-conf.h"
#include "sym-name-table.h"

void symdb_print_help()
{
    const char *help_str =
"symdb OPTIONS;OPTIONS 可取值:\n"
"--help,-h;输出当前帮助文档,然后退出\n"
"--language,-L;输出当前支持的语言;并退出\n"
"--db-path=DB-PATH,-dDB-PATH;设置默认数据库的路径,后续调用 sym/symdb 将使用这个数据库;\n"
"  DB-PATH 不需要存在,若其不存在,则会在需要的时候创建;若未指定 DB-PATH,则输出当前使用的数据库\n"
"  的路径.";
    puts(help_str);
    return ;
}


int
symdb_main(int argc,char *argv[])
{
    int main_ret = 0;

    struct option options[] = {
        {"db-path",optional_argument,0,'d'},
        {"help",no_argument,0,'h'},
        {"language",no_argument,0,'L'},
        {NULL,0,0,0}
    };
    int ret = -1;
    optind = 0;
    opterr = 0;
    while ((ret = getopt_long(argc,argv,"-d::hL",options,NULL)) != -1) {
        switch (ret) {
        case 'd': {
            auto &conf = SymdbConf::instance();
            if (optarg != NULL) {
                conf.setDbPath(optarg);
                LOGI("成功设置数据库的默认路径");
            } else {
                printf("默认数据库的路径: %s\n",conf.dbPath().c_str());
            }
        }   break;
        case 'h':
            symdb_print_help();
            return 0;
        case 'L': {
            const auto &support_langs = SymNameTable::supportLanguages();
            for (const auto &var : support_langs)
                printf("%s\n",var.c_str());
            return 0;
        } break;
        default:
            break;
        }
    }

    return main_ret;
}


